/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import DAO.PDFDao;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

/**
 *
 * @author fernando
 */
public class DisciplinasGS implements Serializable {

    public DisciplinasGS() {
        this.curso = new Curso();
        this.professores = new ArrayList<Autor>();
        this.planoDeCurso = new PDF();
    }
    private int id;
    private String nome;
    private int cargaHoraria;
    private Curso curso;
    private int anoCriacao;
    private ArrayList<Autor> professores;
    private String metodologia;
    private String bibliografiaPrincipal;
    private PDF planoDeCurso;
    private String observacoes;
    private StreamedContent file;

    public int getCargaHoraria() {
        return cargaHoraria;
    }

    public void setCargaHoraria(int cargaHoraria) {
        this.cargaHoraria = cargaHoraria;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public int getAnoCriacao() {
        return anoCriacao;
    }

    public void setAnoCriacao(int anoCriacao) {
        this.anoCriacao = anoCriacao;
    }

    public ArrayList<Autor> getProfessores() {
        return professores;
    }

    public void setProfessores(ArrayList<Autor> professores) {
        this.professores = professores;
    }

    public String getMetodologia() {
        return metodologia;
    }

    public void setMetodologia(String metodologia) {
        this.metodologia = metodologia;
    }

    public String getBibliografiaPrincipal() {
        return bibliografiaPrincipal;
    }

    public void setBibliografiaPrincipal(String bibliografiaPrincipal) {
        this.bibliografiaPrincipal = bibliografiaPrincipal;
    }

    public PDF getPlanoDeCurso() {

        return planoDeCurso;
    }

    public void setPlanoDeCurso(PDF planoDeCurso) {
        this.planoDeCurso = planoDeCurso;
    }

    public String getObservacoes() {
        return observacoes;
    }

    public void setObservacoes(String observacoes) {
        this.observacoes = observacoes;
    }

    public void setFile(StreamedContent file) {
        this.file = file;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 67 * hash + (this.nome != null ? this.nome.hashCode() : 0);
        hash = 67 * hash + (this.curso != null ? this.curso.hashCode() : 0);
        hash = 67 * hash + this.anoCriacao;
        return hash;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final DisciplinasGS other = (DisciplinasGS) obj;
        if ((this.nome == null) ? (other.nome != null) : !this.nome.equals(other.nome)) {
            return false;
        }
        if (this.curso != other.curso && (this.curso == null || !this.curso.equals(other.curso))) {
            return false;
        }
        if (this.anoCriacao != other.anoCriacao) {
            return false;
        }
        return true;
    }

    public StreamedContent getFile() {

        planoDeCurso = new PDFDao().consultarPDF(planoDeCurso.getId());
        InputStream stream = new ByteArrayInputStream(planoDeCurso.getConteudo());
        file = new DefaultStreamedContent(stream, "pdf", planoDeCurso.getId() + planoDeCurso.getNome() + ".pdf");
        return file;
    }
}
